package base.regex;

/**
 * 正则
 */
public class RegexDemo {


    /*
     字符类
    [abc]          a、b 或 c（简单类）
    [^abc]          任何字符，除了 a、b 或 c（否定）
    [a-zA-Z]        a 到 z 或 A 到 Z，两头的字母包括在内（范围）

    预定义字符类
         .          任何字符（与行结束符可能匹配也可能不匹配）
        \d          数字：[0-9]
        \D          非数字： [^0-9]
        \s          空白字符：[ \t\n\x0B\f\r]
        \S          非空白字符：[^\s]
        \w          单词字符：[a-zA-Z_0-9]
        \W          非单词字符：[^\w]

    Greedy 数量词
        X?          X，一次或一次也没有
        X*          X，零次或多次
        X+          X，一次或多次
        X{n}        X，恰好 n 次  X{n,} X，至少 n 次
        X{n,m}      X，至少 n 次，但是不超过 m 次

    边界匹配器
        ^           行的开头
        $           行的结尾
        \b          单词边界
        \B          非单词边界
        \A          输入的开头
        \G          上一个匹配的结尾
        \Z          输入的结尾，仅用于最后的结束符（如果有的话）
        \z          输入的结尾


     */

    public static void main(String[] args) {
//        regexStringDemo();
        checkString();
    }

    public static void regexStringDemo() {
        String qq = "123456701";
        //checkQQ(qq);

        //正则表达式。
        String regex = "[1-9][0-9]{4,14}";  //
        boolean b = qq.matches(regex);

        System.out.println(qq + ":" + b);       // 123456701:true

    }


    public static void getClassObject1(String qq) {
        int len = qq.length();
        if (len >= 5 && len <= 15) {
            if (!qq.startsWith("0")) {
                try {
                    long l = Long.parseLong(qq);
                    System.out.println(l + ":正确");
                } catch (NumberFormatException e) {
                    System.out.println(qq + ":含有非法字符");
                }
            } else {
                System.out.println(qq + ":不能0开头");
            }
        } else {
            System.out.println(qq + ":长度错误");
        }
    }

    public static void getClassObject2() {
    }

    public static void getClassObject3() {
    }

    public static void getClassObject4() {
    }

    public static void checkString() {
        String str = "aoob";
        String reg = "ao?b";
        boolean b = str.matches(reg);
        System.out.println(str + ":"+reg+":" + b);

        reg = "ao+b";
        b = str.matches(reg);
        System.out.println(str +":"+reg+ " : " + b);

        str = "ab";
        reg = "ao+b";
        b = str.matches(reg);
        System.out.println(str +":"+reg+ ":" + b);

        str = "ab";
        reg = "ao*b";
        b = str.matches(reg);
        System.out.println(str + ":"+reg+":" + b);

        str = "aooooooob";
        reg = "ao{4,}b";
        b = str.matches(reg);
        System.out.println(str + ":"+reg+":" + b);

        reg = "ao{4,6}b";

        b = str.matches(reg);
        System.out.println(str + ":"+reg+":" + b);

    }




}
